It is now common for an individual to regularly use multiple computers from multiple different locations. A typical user may have a first computer at the office and a second computer at home, for example, as well as a portable computer, and a web-enabled mobile device such as a smartphone or tablet computer. To have ready access to the user's content, it is desirable for the user to share that content between these multiple computers.
One attempt to solve this problem has involved the use of network storage devices, whereby services offer users the opportunity to store their documents or other items of content “in the cloud”—that is, on servers accessible to users via the Internet or other network. For example, a user who is interested in working on a document from multiple locations can store the document on a network file server and then edit it from home, work, or any other location that provides network access to the file server. For convenience, the users of such systems may store local copies of the documents from the server on their different computers, viewing and editing the local copies using applications installed on the computers. If the users make changes, they may then upload the changed copies back to the server. In a similar manner, a user may indirectly make changes to files or other data by using applications running on the user's different computers, with the applications making changes to the files or other data in response to the user's actions in the applications. In order to maintain a consistent state of the applications, these files also need to be uploaded to the server and distributed to the user's other computers.
In some situations, however, the different copies of the user's content (documents, files, or other data) on the different user computers can become inconsistent. This may occur, for example, when one or more of the computers temporarily lacks network connectivity, preventing the changed content from being uploaded back to the server. The user might then switch to a different computer, access the (unchanged) content on the server, and make a separate, different change to the content. Thus, when the two different changed sets of content are eventually uploaded back to the server, it will be necessary to reconcile the separate changes to avoid losing user information.
In many instances, however, the server itself is ill-equipped to reconcile the changes. For example, the documents may have data formats unknown to the server, and thus the server will not be able to make a semantically meaningful determination of what the changes are. (This is particularly the case where a single logical change to a document leads to physical changes at multiple distinct locations in the document, such as in the case of documents whose data are described by elements with both opening and closing tags in various sub-parts, for example.) Lacking a representation of the changes at a semantic, rather than physical, level, the server cannot provide the user with a useful summary of the changes, much less automatically reconcile the changes.